package com.lh.jsp.urlparamEncoding;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 ************************************************
 ** Module : URLConnection.openStream比URL.openStream力量大得狠 
 ** Date: 2012-2-22  Time: 下午06:02:35 
 ** Author lh 
 ************************************************ 
 */
public class URLConnectiontest1 {
	public static void main(String[] args) {
		try {
			URL url = new URL("http://www.baidu.com/");// 网址
			URLConnection urlConnection = url.openConnection();// 打开一个连接
			// getHeaderFields()返回头字段的不可修改的 Map。Map 键是表示 response(响应)-header
			// 字段名称的 String。
			// 每个 Map 值为一个不可修改的 String 的列表，它们代表相应的字段值。
			Map<String, List<String>> headers = urlConnection.getHeaderFields();
			// Map.Entry<K,V>映射项（键-值对）。headers.entrySet()返回此映射中包含的映射关系的 Set 视图
			// Set 一个不包含重复元素的 collection。Set<E> E: - 此 set 所维护元素的类型
			Set<Map.Entry<String, List<String>>> entrySet = headers.entrySet();

			for (Map.Entry<String, List<String>> entry : entrySet) {
				String headerName = entry.getKey();// 对应的键
				System.out.println("header Name: " + headerName);

				List<String> headerValues = entry.getValue();
				for (String value : headerValues) {
					System.out.print("Header Value:" + value);
				}
				System.out.println();
				System.out.println();
			}

			InputStream inputStream = urlConnection.getInputStream();// 打开的连接读取的输入流。
			BufferedReader bufferedReader = new BufferedReader(
					new InputStreamReader(inputStream));
			String line = bufferedReader.readLine();
			while (line != null) {
				System.out.println(line);
				line = bufferedReader.readLine();
			}
			bufferedReader.close();

		} catch (MalformedURLException e) {// Malformed:畸形的。错误URL的异常
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
